//
// Created by francklinson on 2021/10/23 AT 16:37.
//
#include <iostream>
#include <variant>
#include <string>
#include "../myTool.h"

//using namespace std;

int main() {
    std::variant<std::string, int> data; // 可以是string 或者int 动态类型?

    std::cout << sizeof(int) << std::endl;  //4
    std::cout << sizeof(std::string) << std::endl; //28
    std::cout << sizeof(data) << std::endl; // 两个变量长度之和  32
    union u{
        int x;
        long long y;
    };
    std::cout << sizeof(u) << std::endl; // 更长的  对同一块内存内容的不同解释


    data = "Francklinson";
    std::cout << std::get<std::string>(data) << std::endl;
    auto *value = std::get_if<std::string>(&data); // 是string 就返回指针 否则返回nullptr
    if (value) {
        // 处理string 的情况
    } else {
        // 处理int的情况
    }
    std::cout << data.index() << std::endl; // 1:int 0:string

    data = 2;
    std::cout << std::get<int>(data) << std::endl;

    return 0;
}

